package d10_homework;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 1. 使用多线程来侦听客户端请求；
 * 2. 如果有客户发出请求，则主动给每位客户端发送一句“欢迎光临！请上传文件(文本文件)！”；
 * 3. 用户上传后，将文件保存在本地，并回复上传成功；
 * 4. 如果客户端上传的文件中有敏感词汇，则替换成**，再保存。
 * 5. 敏感词汇：操
 */
public class Server01 {
    public static void main(String[] args) {
        System.out.println("===服务端已经启动===");
        //目标:掌握java中网络编程的基本使用--->使用TCP通信
        //1、注册端口
        try {
            ServerSocket serverSocket = new ServerSocket(8848);//注意要与客户端的请求一致

            //2、开始等待客户端的Socket管道接通
            //上面是一个阻塞方法,它会等待客户端请求
            //当客户端连接到服务器是, accept()返回一个新的Socket对象,这个对象代表当前连接的客户端
            //因此,-->Socket中封装了很多客户端的网路信息,包括: 客户端的IP地址(Socket.getInetAddress()、客户端的端口号(socket.getPort))
            Socket socket = serverSocket.accept();

            //3、追踪每一个客户端,上先逻辑
            System.out.println(socket.getInetAddress().getHostAddress()+ ":" + socket.getPort() + "上线了~~");

            //4、创建一个线程类-->事项Thread接口
            //创建线程处理客户端的请求
            new ListenClientThread(socket).start();
        } catch (IOException e) {
            e.printStackTrace();//打印堆栈的信息
        }
    }
}
